#include "hal_cs_f61_gpio.h"

#include <stdio.h>

void HAL_GPIO_clk_Init(void)
{
	RCC_AHBPeriphClOCKCmd(RCC_AHBPeriph_GPIO, ENABLE);
}

u8 hal_get_io_reg_status(u16 io_pin)
{
	u8 in_out_state;
	u8 input_ch_state;
	u8 data_val;
	u8 pull_up_state;

	in_out_state = GPIO_ReadInOutState(io_pin);
	pull_up_state = GPIO_ReadPullUpState(io_pin);

	if (GPIO_Mode_INPUT == in_out_state)
	{
		input_ch_state = GPIO_ReadInputChState(io_pin);
		if (1 == input_ch_state) // close input ch
		{
			data_val = 1;
		}
		else
		{
			data_val = GPIO_ReadInputDataBit(io_pin);
		}
	}
	else
	{
		data_val = GPIO_ReadOutputDataBit(io_pin);
	}

	return data_val | (pull_up_state << 4) | (in_out_state << 6);
}
void hal_start_toggle_all_io(void)
{
//	u8 i;

//#ifdef GP_UN_AUTO_TEST_NUM
//	for (i = GP_IN_COUNT; i < GP_COUNT - GP_UN_AUTO_TEST_NUM; i++)
//#else
//	for (i = GP_IN_COUNT; i < GP_COUNT; i++)
//#endif
//	{
//		GPIO_SetMode(st_hal_platform.io_buf[i], GPIO_Mode_OUTPUT);
//		GPIO_WriteBits(st_hal_platform.io_buf[i], 0);
//	}
//}

//void hal_end_toggle_all_io(void)
//{
//	u8 i;
//	
//#ifdef GP_UN_AUTO_TEST_NUM
//	for (i = GP_IN_COUNT; i < GP_COUNT - GP_UN_AUTO_TEST_NUM; i++)
//#else
//	for (i = GP_IN_COUNT; i < GP_COUNT; i++)
//#endif
//	{
//		GPIO_SetMode(st_hal_platform.io_buf[i], GPIO_Mode_INPUT);
//	}

}

